Recovering Architectural Design Decisions
نویسندگان
چکیده
Designing and maintaining a software system’s architecture typically involve making numerous design decisions, each potentially affecting the system’s functional and nonfunctional properties. Understanding these design decisions can help inform future decisions and implementation choices and can avoid introducing regressions and architectural inefficiencies later. Unfortunately, design decisions are rarely well documented and are typically a lost artifact of the architecture creation and maintenance process. The loss of this information can thus hurt development. To address this shortcoming, we develop RecovAr, a technique for automatically recovering design decisions from the project’s readily available history artifacts, such as an issue tracker and version control repository. RecovAr uses state-ofthe-art architectural recovery techniques on a series of version control commits and maps those commits to issues to identify decisions that affect system architecture. While some decisions can still be lost through this process, our evaluation on Hadoop and Struts, two large open-source systems with over 8 years of development each and, on average, more than 1 million lines of code, shows that RecovAr has the recall of 75% and a precision of 77%. Our work formally defines architectural design decisions and develops an approach for tracing such decisions in project histories. Additionally, the work introduces methods to classify whether decisions are architectural and to map decisions to code elements. Finally, our work contributes a methodology engineers can follow to preserve design-decision knowledge in their projects.
منابع مشابه
Documenting after the fact: Recovering architectural design decisions
Software architecture documentation helps people in understanding the software architecture of a system. In practice, software architectures are often documented after the fact, i.e. they are maintained or created after most of the design decisions have been made and implemented. To keep the architecture documentation up-to-date an architect needs to recover and describe these decisions. This p...
متن کاملRecovering Software Architectural Knowledge from Documentation using Conceptual Model
Software architectural knowledge (AK) is the integrated representation of the software architecture (SA) of a software-intensive system, the architectural design decisions, and the external context/environment. AK annotation using AK conceptual model is used to recover formal AK from SA documentation, including architecture design as well as the design decisions, rationale, context, and other f...
متن کاملRecovering Rationale
Understanding the rationale of the architectural decisions supports software evolution: when developers add functionality, the explicit rationale helps them to track which decisions need to be revisited and which alternatives have already been evaluated. Unfortunately, architectural rationale is hardly ever documented for existing legacy systems. Is there any chance we can recover the architect...
متن کاملThe supportive effect of patterns in architecture decision recovery - A controlled experiment
The documentation of software architectural design decisions is important to help people understand the system and the rationale behind architectural solutions. In practice, the documentation of such decisions is regularly done after the fact, or skipped completely. To support software maintenance and evolution, the decisions have to be recovered and described. This is often hindered by the fac...
متن کاملPreserving the Quality of Architectural Tactics in Source Code
Preserving the Quality of Architectural Tactics in Source Code by Mehdi Mirakhorli In any complex software system, strong interdependencies exist between requirements and software architecture. Requirements drive architectural choices while also being constrained by the existing architecture and by what is economically feasible. This makes it advisable to concurrently specify the requirements, ...
متن کامل